/**
 * 203. 移除链表元素
 *
 * 删除链表中等于给定值 val 的所有节点。
 *
 * 示例:
 *
 * 输入: 1->2->6->3->4->5->6, val = 6
 * 输出: 1->2->3->4->5
 */
public class Solution_203 {
    public ListNode removeElements(ListNode head, int val) {
        if (head == null) return null;
        while (head.val == val) {
            head=head.next;
            if (head == null) return null;
        }
        ListNode p = head;
        ListNode q = p.next;
        while (q != null) {
            if (q.val == val) {
                q = q.next;
                p.next = q;
                continue;
            }
            p = q;
            q = q.next;
        }
        return head;
    }
}
